package com.fengze.business.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fengze.common.annotation.Excel;
import com.fengze.common.core.domain.BaseEntity;

/**
 * 立项登记对象 fz_project_info
 *
 * @author lug
 * @date 2024-02-02
 */
public class ProjectInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目成员名称 */
    private Long id;

    private String createUserName;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String name;

    /** 项目编码 */
    @Excel(name = "项目编码")
    private String code;

    /** 客户id */
    @Excel(name = "客户id")
    private Long clientId;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String clientName;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 创建用户id */
    @Excel(name = "创建用户id")
    private Long userId;

    /** 创建部门id */
    @Excel(name = "创建部门id")
    private Long deptId;

    /** 文件存放路径 */
    @Excel(name = "文件存放路径")
    private String fileUrl;

    /** 合作方式 */
    @Excel(name = "合作方式")
    private String cooperationMode;

    /** 预算金额 */
    @Excel(name = "预算金额")
    private BigDecimal budgetAmount;

    private BigDecimal maxMoney;

    private BigDecimal minMoney;

    /** 项目负责人 */
    @Excel(name = "项目负责人")
    private String projectLeader;

    /** 项目负责人id */
    @Excel(name = "项目负责人id")
    private Long projectLeaderId;

    /** 项目经理 */
    @Excel(name = "项目经理")
    private String projectManager;

    /** 项目经理id */
    @Excel(name = "项目经理id")
    private Long projectManagerId;

    /** 合同名称 */
    @Excel(name = "合同名称")
    private String contractName;

    /** 合同id */
    @Excel(name = "合同id")
    private Long contractId;

    /** 项目简介 */
    @Excel(name = "项目简介")
    private String description;

    /** 项目成员id */
    @Excel(name = "项目成员id")
    private String projectMembersIds;

    /** 项目成员名称 */
    @Excel(name = "项目成员名称")
    private String projectMembersNames;

    /** 初期配合人源id */
    @Excel(name = "初期配合人源id")
    private String initialCooperationMembersIds;

    /** 初期配合人员名称 */
    @Excel(name = "初期配合人员名称")
    private String initialCooperationMembersNames;

    /** 前期项目信息id */
    @Excel(name = "前期项目信息id")
    private Long earlyStageProjectId;

    /** 前期项目信息名称 */
    @Excel(name = "前期项目信息名称")
    private String earlyStageProjectName;

    /** 项目状态 */
    @Excel(name = "项目状态")
    private Integer status;

    /** 项目阶段 */
    @Excel(name = "项目阶段")
    private String stage;

    /** 客户联系人 */
    @Excel(name = "客户联系人")
    private String clientContacts;

    /** 客户联系人电话 */
    @Excel(name = "客户联系人电话")
    private String clientContactsPhone;

    private List<ProjectPlan> planList;

    public List<ProjectPlan> getPlanList() {
        return planList;
    }

    public void setPlanList(List<ProjectPlan> planList) {
        this.planList = planList;
    }

    /**
     * 付款总金额
     */
    private BigDecimal paymentTotal;

    /**
     * 收款总金额
     */
    private BigDecimal receiveTotal;

    public BigDecimal getPaymentTotal() {
        return paymentTotal;
    }

    public void setPaymentTotal(BigDecimal paymentTotal) {
        this.paymentTotal = paymentTotal;
    }

    public BigDecimal getReceiveTotal() {
        return receiveTotal;
    }

    public void setReceiveTotal(BigDecimal receiveTotal) {
        this.receiveTotal = receiveTotal;
    }

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    private String planStr;

    public BigDecimal getMaxMoney() {
        return maxMoney;
    }

    public void setMaxMoney(BigDecimal maxMoney) {
        this.maxMoney = maxMoney;
    }

    public BigDecimal getMinMoney() {
        return minMoney;
    }

    public void setMinMoney(BigDecimal minMoney) {
        this.minMoney = minMoney;
    }

    public String getPlanStr() {
        return planStr;
    }

    public void setPlanStr(String planStr) {
        this.planStr = planStr;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setName(String name)
    {
        this.name = name;
    }

    public String getName()
    {
        return name;
    }
    public void setCode(String code)
    {
        this.code = code;
    }

    public String getCode()
    {
        return code;
    }
    public void setClientId(Long clientId)
    {
        this.clientId = clientId;
    }

    public Long getClientId()
    {
        return clientId;
    }
    public void setClientName(String clientName)
    {
        this.clientName = clientName;
    }

    public String getClientName()
    {
        return clientName;
    }
    public void setStartTime(Date startTime)
    {
        this.startTime = startTime;
    }

    public Date getStartTime()
    {
        return startTime;
    }
    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    public Long getDeptId()
    {
        return deptId;
    }
    public void setFileUrl(String fileUrl)
    {
        this.fileUrl = fileUrl;
    }

    public String getFileUrl()
    {
        return fileUrl;
    }
    public void setCooperationMode(String cooperationMode)
    {
        this.cooperationMode = cooperationMode;
    }

    public String getCooperationMode()
    {
        return cooperationMode;
    }
    public void setBudgetAmount(BigDecimal budgetAmount)
    {
        this.budgetAmount = budgetAmount;
    }

    public BigDecimal getBudgetAmount()
    {
        return budgetAmount;
    }
    public void setProjectLeader(String projectLeader)
    {
        this.projectLeader = projectLeader;
    }

    public String getProjectLeader()
    {
        return projectLeader;
    }
    public void setProjectLeaderId(Long projectLeaderId)
    {
        this.projectLeaderId = projectLeaderId;
    }

    public Long getProjectLeaderId()
    {
        return projectLeaderId;
    }
    public void setProjectManager(String projectManager)
    {
        this.projectManager = projectManager;
    }

    public String getProjectManager()
    {
        return projectManager;
    }
    public void setProjectManagerId(Long projectManagerId)
    {
        this.projectManagerId = projectManagerId;
    }

    public Long getProjectManagerId()
    {
        return projectManagerId;
    }
    public void setContractName(String contractName)
    {
        this.contractName = contractName;
    }

    public String getContractName()
    {
        return contractName;
    }
    public void setContractId(Long contractId)
    {
        this.contractId = contractId;
    }

    public Long getContractId()
    {
        return contractId;
    }
    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }
    public void setProjectMembersIds(String projectMembersIds)
    {
        this.projectMembersIds = projectMembersIds;
    }

    public String getProjectMembersIds()
    {
        return projectMembersIds;
    }
    public void setProjectMembersNames(String projectMembersNames)
    {
        this.projectMembersNames = projectMembersNames;
    }

    public String getProjectMembersNames()
    {
        return projectMembersNames;
    }
    public void setInitialCooperationMembersIds(String initialCooperationMembersIds)
    {
        this.initialCooperationMembersIds = initialCooperationMembersIds;
    }

    public String getInitialCooperationMembersIds()
    {
        return initialCooperationMembersIds;
    }
    public void setInitialCooperationMembersNames(String initialCooperationMembersNames)
    {
        this.initialCooperationMembersNames = initialCooperationMembersNames;
    }

    public String getInitialCooperationMembersNames()
    {
        return initialCooperationMembersNames;
    }
    public void setEarlyStageProjectId(Long earlyStageProjectId)
    {
        this.earlyStageProjectId = earlyStageProjectId;
    }

    public Long getEarlyStageProjectId()
    {
        return earlyStageProjectId;
    }
    public void setEarlyStageProjectName(String earlyStageProjectName)
    {
        this.earlyStageProjectName = earlyStageProjectName;
    }

    public String getEarlyStageProjectName()
    {
        return earlyStageProjectName;
    }
    public void setStatus(Integer status)
    {
        this.status = status;
    }

    public Integer getStatus()
    {
        return status;
    }
    public void setStage(String stage)
    {
        this.stage = stage;
    }

    public String getStage()
    {
        return stage;
    }
    public void setClientContacts(String clientContacts)
    {
        this.clientContacts = clientContacts;
    }

    public String getClientContacts()
    {
        return clientContacts;
    }
    public void setClientContactsPhone(String clientContactsPhone)
    {
        this.clientContactsPhone = clientContactsPhone;
    }

    public String getClientContactsPhone()
    {
        return clientContactsPhone;
    }
    public void setEndTime(Date endTime)
    {
        this.endTime = endTime;
    }

    public Date getEndTime()
    {
        return endTime;
    }

    public String getCreateUserName() {
        return createUserName;
    }

    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("name", getName())
            .append("code", getCode())
            .append("clientId", getClientId())
            .append("clientName", getClientName())
            .append("startTime", getStartTime())
            .append("userId", getUserId())
            .append("deptId", getDeptId())
            .append("createTime", getCreateTime())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("fileUrl", getFileUrl())
            .append("cooperationMode", getCooperationMode())
            .append("budgetAmount", getBudgetAmount())
            .append("projectLeader", getProjectLeader())
            .append("projectLeaderId", getProjectLeaderId())
            .append("projectManager", getProjectManager())
            .append("projectManagerId", getProjectManagerId())
            .append("contractName", getContractName())
            .append("contractId", getContractId())
            .append("description", getDescription())
            .append("projectMembersIds", getProjectMembersIds())
            .append("projectMembersNames", getProjectMembersNames())
            .append("initialCooperationMembersIds", getInitialCooperationMembersIds())
            .append("initialCooperationMembersNames", getInitialCooperationMembersNames())
            .append("earlyStageProjectId", getEarlyStageProjectId())
            .append("earlyStageProjectName", getEarlyStageProjectName())
            .append("status", getStatus())
            .append("stage", getStage())
            .append("clientContacts", getClientContacts())
            .append("clientContactsPhone", getClientContactsPhone())
            .append("endTime", getEndTime())
            .toString();
    }
}
